配置数据校验

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何使用数据传输服务DTS(Data Transmission Service)配置数据校验任务,帮助您监控源库与目标库数据的差异。您可以在同步或迁移实例的高级配置阶段选择相应的数据校验方式或者单独配置数据校验任务,以便及时发现数据不一致的问题。

注意事项

  • 经典网络的数据库实例暂不支持增量数据校验功能。

  • 开启多表归并的实例暂不支持数据校验功能。

  • 运行状态已完成的实例暂不支持数据校验功能。

  • 若待校验的表为无主键且无唯一索引的表,则该表的数据超过10000行时DTS将不会进行数据校验。

  • 若待校验的数据既没有主键约束也没有唯一约束,则DTS将不会进行增量数据校验。

  • 若同步或迁移实例进行重启操作(例如先暂停再启动),则实例中的全量校验任务会重新开始校验。

  • 在执行校验任务前需评估源库和目标库的性能,同时建议您在业务低峰期执行数据校验(例如源库和目标库的CPU负载在30%以下)。因为DTS在进行数据校验时将占用源库和目标库一定的读资源,可能会导致数据库的负载上升。在数据库性能较差、规格较低或业务量较大的情况下,可能会加重数据库压力,甚至导致数据库服务不可用。

  • 在同步或迁移实例中配置的校验任务,数据校验方式的可勾选项与同步类型迁移类型密切相关。

    例如,迁移实例的迁移类型只选择了增量迁移,在配置数据校验方式时则只允许勾选增量校验

  • 增量校验任务仅支持校验增量同步或增量迁移任务中变更的数据,不支持校验手动在目标库中变更的数据。

  • 在校验任务列表配置的校验任务,不支持增量校验。

  • 采用按行抽样进行全字段校验方式对MongoDB进行数据校验时,抽样百分比默认为100%,且不支持修改。

  • 全量校验模式选择了按行抽样进行全字段校验,则不建议同时使用ETL功能。否则,ETL功能修改后的数据会被校验为不一致数据。

  • 不支持校验物化视图。

  • 在全量校验过程中,若单张表中存在差异的数据超过100000行,DTS将终止对该表的校验。请在差异数据量减少后,重新对该表进行校验。

支持的地域

支持的地域,请参见支持的地域列表

支持的链路

说明
  • 源库和目标库间的双向同步链路也支持校验功能。

  • 源库和目标库支持阿里云和自建数据库实例。

数据校验方式

源库

目标库

全量校验

MySQL

MySQL、AnalyticDB MySQL版PolarDB MySQL版、PostgreSQL、AnalyticDB PostgreSQL版、Oracle

PolarDB MySQL版

MySQL、AnalyticDB MySQL版PolarDB MySQL版AnalyticDB PostgreSQL版、Oracle

PostgreSQL

MySQL、PostgreSQL、AnalyticDB PostgreSQL版PolarDB PostgreSQL版PolarDB PostgreSQL版(兼容Oracle)、Oracle

PolarDB PostgreSQL版

MySQL、PostgreSQL、AnalyticDB PostgreSQL版PolarDB PostgreSQL版、Oracle

单节点架构的MongoDB

单节点架构的MongoDB

副本集架构的MongoDB

副本集架构的MongoDB

分片集群架构的MongoDB

分片集群架构的MongoDB

主从复制集群架构的Tair/Redis

主从复制集群架构的Tair/Redis

Redis Cluster集群架构的Tair/Redis

Redis Cluster集群架构的Tair/Redis

SQL Server

MySQL、AnalyticDB MySQL版PolarDB MySQL版、SQL Server、AnalyticDB PostgreSQL版

Oracle

AnalyticDB MySQL版AnalyticDB PostgreSQL版、MySQL、PolarDB MySQL版PolarDB PostgreSQL版PolarDB PostgreSQL版(兼容Oracle)、PostgreSQL、Oracle

PolarDB PostgreSQL版(兼容Oracle)

PolarDB PostgreSQL版(兼容Oracle)AnalyticDB MySQL版、Oracle

Db2 for LUW

MySQL、PolarDB MySQL版AnalyticDB MySQL版AnalyticDB PostgreSQL版

Db2 for i(AS/400)

MySQL

TiDB

MySQL、PolarDB MySQL版AnalyticDB MySQL版

AnalyticDB MySQL版

MySQL、PolarDB MySQL版AnalyticDB MySQL版

增量校验

MySQL

MySQL、AnalyticDB MySQL版PolarDB MySQL版、PostgreSQL、AnalyticDB PostgreSQL版PolarDB PostgreSQL版

PolarDB MySQL版

MySQL、AnalyticDB MySQL版PolarDB MySQL版AnalyticDB PostgreSQL版

PostgreSQL

MySQL、PostgreSQL、AnalyticDB PostgreSQL版PolarDB PostgreSQL版

PolarDB PostgreSQL版

PostgreSQL、AnalyticDB PostgreSQL版PolarDB PostgreSQL版

单节点架构的MongoDB

单节点架构的MongoDB

副本集架构的MongoDB

副本集架构的MongoDB

分片集群架构的MongoDB

分片集群架构的MongoDB

SQL Server

MySQL、AnalyticDB MySQL版PolarDB MySQL版、SQL Server、AnalyticDB PostgreSQL版

Oracle

AnalyticDB MySQL版、MySQL、PolarDB MySQL版PolarDB PostgreSQL版(兼容Oracle)

结构校验

MySQL

MySQL、PolarDB MySQL版

PolarDB MySQL版

MySQL、PolarDB MySQL版

PostgreSQL

PostgreSQL、PolarDB PostgreSQL版

PolarDB PostgreSQL版

PostgreSQL、PolarDB PostgreSQL版

在校验任务列表配置校验任务

  1. 进入校验任务的列表页面。

    1. 登录DMS数据管理服务

    2. 在顶部菜单栏中,单击集成与开发

    3. 在左侧导航栏,选择数据传输(DTS) > 数据校验

    说明

    您也可以登录DTS校验任务列表页面

  2. 进入校验任务的配置页面(二选一)。

    • 已购买校验任务(先购买再配置):找到目标任务,单击操作列的配置任务

      购买方法,请参见购买数据校验任务

    • 未购买校验任务(先配置再购买):单击创建任务

  3. 参考同步方案概览迁移方案概览中的相关配置文档,配置源库及目标库信息。

    说明
    • 先购买再配置任务的实例地区不支持修改。

    • 若源库为分片集群架构的MongoDB,则无需准备Shard账号Shard密码

  4. 配置完成后,单击页面下方的测试连接以进行下一步

    如果源或目标数据库是阿里云数据库实例(例如RDS MySQL云数据库MongoDB版等),DTS会自动将对应地区DTS服务的IP地址添加到阿里云数据库实例的白名单中;如果源或目标数据库是ECS上的自建数据库,DTS会自动将对应地区DTS服务的IP地址添加到ECS的安全规则中,您还需确保自建数据库没有限制ECS的访问(若数据库是集群部署在多个ECS实例,您需要手动将DTS服务对应地区的IP地址添到其余每个ECS的安全规则中);如果源或目标数据库是IDC自建数据库或其他云数据库,则需要您手动添加对应地区DTS服务的IP地址,以允许来自DTS服务器的访问。DTS服务的IP地址,请参见DTS服务器的IP地址段

    警告

    DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。

  5. 设置数据校验方式

    根据业务需求勾选数据校验的方式,若您勾选了全量校验,您还需要设置如下表所示参数。

    说明
    • 全量校验:对全量任务中需要校验的数据进行校验。

    • 结构校验:对需要校验的对象进行结构校验。

    • 结构校验任务执行完成后,才会执行全量和增量校验任务。

    • 在校验任务列表配置的校验任务,不支持增量校验。

    参数

    说明

    全量校验模式

    • 按行抽样进行全字段校验:配置抽样百分比,对抽中的数据进行全字段校验,取值为10~100的整数。

    • 按表行数进行校验:对全量任务数据的行数进行校验,不会对具体的数据内容进行校验。

    说明

    按表行数进行校验的全量校验模式不收费;按行抽样进行全字段校验的全量校验模式按实际校验数据量收费。

    全量校验时间规则

    当前仅支持立即开始

    全量校验超时设置

    • 不设置:全量校验任务超时不会强制结束。

    • 设置:设置全量校验任务结束的延迟时间。在全量校验任务启动后开始计时,若校验任务未在指定时间完成则强制结束。取值为1~72的整数。

    选择校验基准

    • 默认:以源库和目标库的合集为基准,校验源库和目标库数据的一致性。

    • 源库:以源库为基准,校验目标库与源库数据的一致性(不校验目标库比源库多的数据)。

    • 目标库:以目标库为基准,校验源库与目标库数据的一致性(不校验源库比目标库多的数据)。

    每秒读取的最大数据行数rps

    全量数据校验会占用数据库一定的读取资源,您可以根据实际情况对全量校验任务进行限速设置(每秒读取的数据行数和数据量),以缓解数据库的压力。

    说明

    参数值为0时表示无限制,当每秒读取的最大数据行数rps每秒读取最大的Byte数byte/s均为0时,表示不限速。

    每秒读取最大的Byte数byte/s

  6. 设置校验对象

    1. 选择源库待校验的对象。

      源库对象框中勾选需要进行数据校验的对象,然后单击向右将其移动至已选择对象框。

      说明

      仅当选择校验对象的粒度为表时,支持设置目标库表的表名称列名称

    2. 设置目标库待校验的对象。

      1. 已选择对象框中,右击移动过来的Schema。

      2. 在弹出的编辑Schema对话框中,设置目标库的Schema名称,并单击确定

      3. 已选择对象框中,右击移动过来的表。

      4. 在弹出的编辑表对话框中,设置目标库表的表名称

      5. 可选:区域的列名称列,设置目标表的列名。

        说明

        您也可以取消选中全表同步,勾选需要校验的列。

      6. 设置完成后,单击确定

    3. 可选:配置校验告警。

      若您数据校验方式勾选了全量校验,还可以根据业务需求配置全量校验告警

      参数

      说明

      全量校验告警

      • 不设置:不设置告警。

      • 设置:设置告警,您还需要选择和配置告警规则。告警规则如下:

        • 当全量校验任务失败时触发告警。

        • 设置数据不一致的阈值,当全量校验任务不一致数据大于等于设置的阈值时触发告警。

      说明

      若您设置了校验告警,您还需要输入告警联系人的手机号码。当校验任务触发告警时,将以短信的形式通知告警联系人。

  7. 单击下一步高级配置,进行高级配置。

    配置

    说明

    选择调度该任务的专属集群

    DTS默认将任务调度到共享集群上,您无需选择。您可以购买指定规格的专属集群来运行DTS任务,详情请参见什么是DTS专属集群

    源库、目标库无法连接后的重试时间

    在同步任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认持续重试时间为720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的重试时间内重新连接上源库、目标库,同步任务将自动恢复。否则,同步任务将会失败。

    说明
    • 针对同源或者同目标的多个DTS实例,如DTS实例A和DTS实例B,设置网络重试时间时A设置30分钟,B设置60分钟,则重试时间以低的30分钟为准。

    • 由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。

    源库、目标库出现其他问题后的重试时间

    在同步任务启动后,若源库或目标库出现非连接性的其他问题(如DDL或DML执行异常),则DTS会报错并会立即进行持续的重试操作,默认持续重试时间为10分钟,您也可以在取值范围(1~1440分钟)内自定义重试时间,建议设置10分钟以上。如果DTS在设置的重试时间内相关操作执行成功,同步任务将自动恢复。否则,同步任务将会失败。

    重要

    源库、目标库出现其他问题后的重试时间的值需要小于源库、目标库无法连接后的重试时间的值。

    环境标签

    非必选项,您可以根据实际情况,选择用于标识实例的环境标签。

  8. 保存任务并进行预检查。

    • 若您需要查看调用API接口配置该实例时的参数信息,请将鼠标光标移动至下一步保存任务并预检查按钮上,然后单击气泡中的预览OpenAPI参数

    • 若您无需查看或已完成查看API参数,请单击页面下方的下一步保存任务并预检查

    说明
    • 在校验任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动校验任务。

    • 如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

    • 如果预检查产生警告:

      • 对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

      • 对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情确认屏蔽确定重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。

  9. 查看数据校验任务进度。

    • 已购买校验任务(先购买再配置):预检查通过率显示为100%时,单击返回列表

    • 未购买校验任务(先配置再购买):预检查通过率显示为100%时,依次单击下一步购买、阅读并勾选《数据传输(按量付费)服务条款》、单击购买并启动、单击确定

在DTS同步或迁移实例中配置数据校验

  1. 进入数据校验页面。

    说明

    若您使用的是旧版配置页,则需要进入高级配置页面。

    • 新创建的DTS实例:进入方法,请参见同步方案概览迁移方案概览中的相关配置文档。

    • 已创建完成的DTS实例:

      1. 进入同步或迁移任务列表页面。

      2. 单击目标实例ID。

      3. 基本信息任务管理页面中单击创建校验任务

  2. 设置数据校验方式

    根据业务需求勾选数据校验的方式,若您勾选了全量校验,您还需要设置如下表所示参数。

    说明
    • 全量校验:对全量任务中需要校验的数据进行校验。若实例不包含增量任务,则实例创建成功后且全量数据写入完成时开始校验;若实例包含增量任务,则实例创建成功且增量数据写入首次无延迟时开始校验。

    • 增量校验:对增量任务的数据进行校验,实例创建成功后且增量数据写入首次无延迟时开始校验。

    • 结构校验:对需要校验的对象进行结构校验。若实例不包含增量任务,则实例创建成功后且库表结构和全量数据写入完成时开始校验;若实例包含增量任务,则实例创建成功后且增量数据写入首次无延迟时开始校验。

    • 结构校验任务执行完成后,才会执行全量和增量校验任务。

    参数

    说明

    全量校验模式

    • 按行抽样进行全字段校验:配置抽样百分比,对抽中的数据进行全字段校验,取值为10~100的整数。

    • 按表行数进行校验:对全量任务数据的行数进行校验,不会对具体的数据内容进行校验。

    说明

    按表行数进行校验的全量校验模式不收费;按行抽样进行全字段校验的全量校验模式按实际校验数据量收费。

    全量校验时间规则

    当前仅支持立即开始

    全量校验超时设置

    • 不设置:全量校验任务超时不会强制结束。

    • 设置:设置全量校验任务结束的延迟时间。在全量校验任务启动后开始计时,若校验任务未在指定时间完成则强制结束。取值为1~72的整数。

    选择校验基准

    • 默认:以源库和目标库的合集为基准,校验源库和目标库数据的一致性。

    • 源库:以源库为基准,校验目标库与源库数据的一致性(不校验目标库比源库多的数据)。

    • 目标库:以目标库为基准,校验源库与目标库数据的一致性(不校验源库比目标库多的数据)。

    每秒读取的最大数据行数rps

    全量数据校验会占用数据库一定的读取资源,您可以根据实际情况对全量校验任务进行限速设置(每秒读取的数据行数和数据量),以缓解数据库的压力。

    说明

    参数值为0时表示无限制,当每秒读取的最大数据行数rps每秒读取最大的Byte数byte/s均为0时,表示不限速。

    每秒读取最大的Byte数byte/s

  3. 设置校验对象

    您可以在已选择对象框中勾选不需要进行数据校验的对象,然后单击移除进行移除。

    说明

    DTS默认已将待同步或迁移的对象移动至已选择对象框。

  4. 配置校验告警。

    根据业务需求,选择配置如下表所示参数。

    参数

    说明

    全量校验告警

    • 不设置:不设置告警。

    • 设置:设置告警,您还需要选择和配置告警规则。告警规则如下:

      • 当全量校验任务失败时触发告警。

      • 设置数据不一致的阈值,当全量校验任务不一致数据大于等于设置的阈值时触发告警。

    增量校验告警

    • 不设置:不设置告警。

    • 设置:设置告警,您还需要选择和配置告警规则。告警规则如下:

      • 当增量校验任务失败时触发告警。

      • 设置数据不一致的周期数、统计周期和不一致数量阈值,当增量校验任务累计在设置的若干个周期,数据不一致记录量均大于等于设置的阈值时触发告警。

      • 设置数据延迟的周期数、统计周期和延迟时间阈值,当增量校验任务累计在设置的若干个周期,延迟均大于等于设置的阈值时触发告警。

    说明

    若您设置了校验告警,您还需要输入告警联系人的手机号码。当校验任务触发告警时,将以短信的形式通知告警联系人。

  5. 根据提示及相关配置文档,完成后续配置。

相关API

API接口

说明

ConfigureDtsJob

配置数据校验任务。

常见问题

  • 使用映射功能修改的库、表、列名,是否会被校验为不一致数据?

    数据校验已适配数据库和表的映射功能。若使用映射功能修改了库、表、列名,其中仅列名会被校验为不一致数据,数据库名和表名则不会。

  • 为什么在DTS实例中无法勾选校验方式?

    可能是当前实例不支持相应的数据校验功能,或者在配置任务对象及高级配置阶段未选择相应的同步类型迁移类型

  • 使用过滤条件功能过滤的数据,是否会被校验为不一致数据?

    • 全量校验:否,全量数据校验已适配过滤条件功能。

    • 增量校验:否,增量数据校验已适配过滤条件功能(源库数据库类型MongoDB的增量任务不支持过滤条件功能)。